import java.util.concurrent.TimeUnit;

public class Demo_703 {
    public static void main(String[] args) {
        //定义一个阻塞队列，交易场所
        MyBlockingQueue queue = new MyBlockingQueue(100);

        //创建生产者线程
        Thread producer = new Thread(()->{
            int num = 0;
            //使用循环不停的向队列中添加元素，直到队列容量占满
            while (true){
                try {
                    //添加元素
                    queue.put(num);
                    System.out.println("生产了元素: "+num);
                    num++;
                    //休眠一会
                    TimeUnit.MILLISECONDS.sleep(10);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        });
        //启动
        producer.start();


        //定义一个消费者线程
        Thread consumer = new Thread(()->{
            //不断地从队列中取出元素
            while (true){
                try {
                    Integer value = queue.take();
                    System.out.println("消费了元素: "+value);
                    TimeUnit.MILLISECONDS.sleep(1);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        });
        //启动消费者线程
        consumer.start();
    }

}
